package Controller;

import Beans.MovimientoBean;
import DAO.HibernateMovimientoDAO;
import DTO.MovimientoDTO;
import Model.Movimiento;

public class AdministradorMovimiento {
private static AdministradorMovimiento instancia;
	
	private AdministradorMovimiento(){
		
	}
	public static AdministradorMovimiento getInstancia(){
		if(instancia==null)
			instancia=new AdministradorMovimiento();
		return instancia;
	}
	
	public MovimientoBean fromModelTOBean(Movimiento movimiento) {
		MovimientoBean movimientoBean=null;
		if(movimiento!=null){
		movimientoBean=new MovimientoBean();
		movimientoBean.setIdMovimiento(movimiento.getId());
		movimientoBean.setCantidad(movimiento.getCantidad());
		movimientoBean.setDeposito(AdministradorDeposito.getInstancia().fromModelTOBean(movimiento.getDeposito()));
		movimientoBean.setFechaAlta(movimiento.getFechaAlta());
		movimientoBean.setFechaModificacion(movimiento.getFechaModificacion());
		movimientoBean.setLote(AdministradorLote.getInstancia().fromModelTOBean(movimiento.getLote()));
		movimientoBean.setMotivo(movimiento.getMotivo());
		movimientoBean.setTipo(movimiento.getTipo());
		movimientoBean.setUsuarioAlta(movimiento.getUsuarioAlta());
		movimientoBean.setUsuarioModificacion(movimiento.getUsuarioModificacion());
		}
		return movimientoBean;
	}
	public Movimiento fromDTOTOModel(MovimientoDTO movimientoDTO) {
		Movimiento movimiento=null;
		if(movimientoDTO!=null){
			movimiento=new Movimiento();
			movimiento.setId(movimientoDTO.getId());
			movimiento.setCantidad(movimientoDTO.getCantidad());
			movimiento.setDeposito(AdministradorDeposito.getInstancia().fromDTOTOModel(movimientoDTO.getDeposito()));
			movimiento.setFechaAlta(movimientoDTO.getFechaAlta());
			movimiento.setFechaModificacion(movimientoDTO.getFechaModificacion());
			movimiento.setLote(AdministradorLote.getInstancia().fromDTOTOModel(movimientoDTO.getLote()));
			movimiento.setMotivo(movimientoDTO.getMotivo());
			movimiento.setTipo(movimientoDTO.getTipo());
			movimiento.setUsuarioAlta(movimientoDTO.getUsuarioAlta());
			movimiento.setUsuarioModificacion(movimientoDTO.getUsuarioModificacion());
		}
		return movimiento;
	}
	
	public MovimientoDTO fromModelTODTO(Movimiento movimiento) {
		MovimientoDTO movimientoDTO=null;
		if(movimiento!=null){			
			movimientoDTO=new MovimientoDTO();
			movimientoDTO.setId(movimiento.getId());
			movimientoDTO.setCantidad(movimiento.getCantidad());
			movimientoDTO.setDeposito(AdministradorDeposito.getInstancia().fromModelTODTO(movimiento.getDeposito()));
			movimientoDTO.setFechaAlta(movimiento.getFechaAlta());
			movimientoDTO.setFechaModificacion(movimiento.getFechaModificacion());
			movimientoDTO.setLote(AdministradorLote.getInstancia().fromModelTODTO(movimiento.getLote()));
			movimientoDTO.setMotivo(movimiento.getMotivo());
			movimientoDTO.setTipo(movimiento.getTipo());
			movimientoDTO.setUsuarioAlta(movimiento.getUsuarioAlta());
			movimientoDTO.setUsuarioModificacion(movimiento.getUsuarioModificacion());
		}
		return movimientoDTO;
	}
	
	public Movimiento fromBeanTOModel(MovimientoBean movimientoBean) {
		Movimiento movimiento=null;
		if(movimientoBean!=null){
			
			movimiento=new Movimiento();
			movimiento.setId(movimientoBean.getIdMovimiento());
			movimiento.setCantidad(movimientoBean.getCantidad());
			movimiento.setDeposito(AdministradorDeposito.getInstancia().fromBeanTOModel(movimientoBean.getDeposito()));
			movimiento.setFechaAlta(movimientoBean.getFechaAlta());
			movimiento.setFechaModificacion(movimientoBean.getFechaModificacion());
			movimiento.setLote(AdministradorLote.getInstancia().fromBeanTOModel(movimientoBean.getLote()));
			movimiento.setMotivo(movimientoBean.getMotivo());
			movimiento.setTipo(movimientoBean.getTipo());
			movimiento.setUsuarioAlta(movimientoBean.getUsuarioAlta());
			movimiento.setUsuarioModificacion(movimientoBean.getUsuarioModificacion());	
			
		}
		return movimiento;
	}
	public void grabarMovimiento(Movimiento mov) {
		MovimientoBean movb=fromModelTOBean(mov);
		HibernateMovimientoDAO.getInstancia().grabarMovimiento(movb);
		
	}
	public Movimiento buscarMovimiento(Movimiento mov) {
		MovimientoBean movb=fromModelTOBean(mov);
		movb=HibernateMovimientoDAO.getInstancia().buscarMovimiento(movb);
		return fromBeanTOModel(movb);
	}
	public void updateMovimiento(Movimiento mov1) {
		HibernateMovimientoDAO.getInstancia().updateMovimiento(fromModelTOBean(mov1));
		
	}
}
